/*
* Copyright (C) 2014 Alfons Wirtz
* website www.freerouting.net
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License at <http://www.gnu.org/licenses/>
* for more details.
*
* ClearanceComboBox.java
*
* Created on 1. Maerz 2005, 09:27
*/
package gui;
import rules.ClearanceMatrix;
/**
* A Combo Box with an item for each clearance class of the board..
*
* @author alfons
*/
public class ComboBoxClearance extends javax.swing.JComboBox
{
/** Creates a new instance of ClearanceComboBox */
public ComboBoxClearance(ClearanceMatrix p_clearance_matrix)
{
this.class_arr = new ClearanceClass [p_clearance_matrix.get_class_count()];
for (int i = 0; i < this.class_arr.length; ++i)
{
this.class_arr[i] = new ClearanceClass(p_clearance_matrix.get_name(i), i);
}
this.setModel(new javax.swing.DefaultComboBoxModel(this.class_arr));
this.setSelectedIndex(1);
}
/**
* Adjusts this combo box to p_new_clearance_matrix.
*/
public void adjust(ClearanceMatrix p_new_clearance_matrix)
{
int old_index = this.get_selected_class_index();
this.class_arr = new ClearanceClass [p_new_clearance_matrix.get_class_count()];
for (int i = 0; i < this.class_arr.length; ++i)
{
this.class_arr[i] = new ClearanceClass(p_new_clearance_matrix.get_name(i), i);
}
this.setModel(new javax.swing.DefaultComboBoxModel(this.class_arr));
this.setSelectedIndex(Math.min(old_index, this.class_arr.length - 1));
}
/**
* Returns the index of the selected clearance class in the clearance matrix.
*/
public int get_selected_class_index()
{
return ((ClearanceClass) this.getSelectedItem()).index;
}
/**
* Returns the number of clearance classes in this combo box.
*/
public int get_class_count()
{
return this.class_arr.length;
}
private ClearanceClass[] class_arr;
/**
* Contains the name of a clearance class and its index in the clearance matrix.
*/
private static class ClearanceClass
{
public ClearanceClass(String p_name, int p_index)
{
this.name = p_name;
this.index = p_index;
}
public String toString()
{
return name;
}
public final String name;
public final int index;
}
}